﻿using System;
using System.Threading;
using Mono.Cecil.Cil;
using Mono.Collections.Generic;

namespace Mono.Cecil
{
	// Token: 0x0200009C RID: 156
	public sealed class MethodDefinition : MethodReference, IMemberDefinition, ICustomAttributeProvider, IMetadataTokenProvider, ISecurityDeclarationProvider, ICustomDebugInformationProvider
	{
		// Token: 0x17000129 RID: 297
		// (get) Token: 0x060005BD RID: 1469 RVA: 0x0001FCFC File Offset: 0x0001DEFC
		// (set) Token: 0x060005BE RID: 1470 RVA: 0x0001FD14 File Offset: 0x0001DF14
		public override string Name
		{
			get
			{
				return base.Name;
			}
			set
			{
				bool flag = base.IsWindowsRuntimeProjection && value != base.Name;
				if (flag)
				{
					throw new InvalidOperationException();
				}
				base.Name = value;
			}
		}

		// Token: 0x1700012A RID: 298
		// (get) Token: 0x060005BF RID: 1471 RVA: 0x0001FD4C File Offset: 0x0001DF4C
		// (set) Token: 0x060005C0 RID: 1472 RVA: 0x0001FD64 File Offset: 0x0001DF64
		public MethodAttributes Attributes
		{
			get
			{
				return (MethodAttributes)this.attributes;
			}
			set
			{
				bool flag = base.IsWindowsRuntimeProjection && value != (MethodAttributes)this.attributes;
				if (flag)
				{
					throw new InvalidOperationException();
				}
				this.attributes = (ushort)value;
			}
		}

		// Token: 0x1700012B RID: 299
		// (get) Token: 0x060005C1 RID: 1473 RVA: 0x0001FD9C File Offset: 0x0001DF9C
		// (set) Token: 0x060005C2 RID: 1474 RVA: 0x0001FDB4 File Offset: 0x0001DFB4
		public MethodImplAttributes ImplAttributes
		{
			get
			{
				return (MethodImplAttributes)this.impl_attributes;
			}
			set
			{
				bool flag = base.IsWindowsRuntimeProjection && value != (MethodImplAttributes)this.impl_attributes;
				if (flag)
				{
					throw new InvalidOperationException();
				}
				this.impl_attributes = (ushort)value;
			}
		}

		// Token: 0x1700012C RID: 300
		// (get) Token: 0x060005C3 RID: 1475 RVA: 0x0001FDEC File Offset: 0x0001DFEC
		// (set) Token: 0x060005C4 RID: 1476 RVA: 0x000040B7 File Offset: 0x000022B7
		public MethodSemanticsAttributes SemanticsAttributes
		{
			get
			{
				bool flag = this.sem_attrs_ready;
				MethodSemanticsAttributes result;
				if (flag)
				{
					result = this.sem_attrs;
				}
				else
				{
					bool hasImage = base.HasImage;
					if (hasImage)
					{
						this.ReadSemantics();
						result = this.sem_attrs;
					}
					else
					{
						this.sem_attrs = MethodSemanticsAttributes.None;
						this.sem_attrs_ready = true;
						result = this.sem_attrs;
					}
				}
				return result;
			}
			set
			{
				this.sem_attrs = value;
			}
		}

		// Token: 0x1700012D RID: 301
		// (get) Token: 0x060005C5 RID: 1477 RVA: 0x0001FE44 File Offset: 0x0001E044
		// (set) Token: 0x060005C6 RID: 1478 RVA: 0x000038BC File Offset: 0x00001ABC
		internal MethodDefinitionProjection WindowsRuntimeProjection
		{
			get
			{
				return (MethodDefinitionProjection)this.projection;
			}
			set
			{
				this.projection = value;
			}
		}

		// Token: 0x060005C7 RID: 1479 RVA: 0x0001FE64 File Offset: 0x0001E064
		internal void ReadSemantics()
		{
			bool flag = this.sem_attrs_ready;
			if (!flag)
			{
				ModuleDefinition module = this.Module;
				bool flag2 = module == null;
				if (!flag2)
				{
					bool flag3 = !module.HasImage;
					if (!flag3)
					{
						object syncRoot = module.SyncRoot;
						lock (syncRoot)
						{
							bool flag5 = this.sem_attrs_ready;
							if (!flag5)
							{
								module.Read<MethodDefinition>(this, delegate(MethodDefinition method, MetadataReader reader)
								{
									reader.ReadAllSemantics(method);
								});
							}
						}
					}
				}
			}
		}

		// Token: 0x1700012E RID: 302
		// (get) Token: 0x060005C8 RID: 1480 RVA: 0x0001FF10 File Offset: 0x0001E110
		public bool HasSecurityDeclarations
		{
			get
			{
				bool flag = this.security_declarations != null;
				bool result;
				if (flag)
				{
					result = (this.security_declarations.Count > 0);
				}
				else
				{
					result = this.GetHasSecurityDeclarations(this.Module);
				}
				return result;
			}
		}

		// Token: 0x1700012F RID: 303
		// (get) Token: 0x060005C9 RID: 1481 RVA: 0x0001FF4C File Offset: 0x0001E14C
		public Collection<SecurityDeclaration> SecurityDeclarations
		{
			get
			{
				return this.security_declarations ?? this.GetSecurityDeclarations(ref this.security_declarations, this.Module);
			}
		}

		// Token: 0x17000130 RID: 304
		// (get) Token: 0x060005CA RID: 1482 RVA: 0x0001FF7C File Offset: 0x0001E17C
		public bool HasCustomAttributes
		{
			get
			{
				bool flag = this.custom_attributes != null;
				bool result;
				if (flag)
				{
					result = (this.custom_attributes.Count > 0);
				}
				else
				{
					result = this.GetHasCustomAttributes(this.Module);
				}
				return result;
			}
		}

		// Token: 0x17000131 RID: 305
		// (get) Token: 0x060005CB RID: 1483 RVA: 0x0001FFB8 File Offset: 0x0001E1B8
		public Collection<CustomAttribute> CustomAttributes
		{
			get
			{
				return this.custom_attributes ?? this.GetCustomAttributes(ref this.custom_attributes, this.Module);
			}
		}

		// Token: 0x17000132 RID: 306
		// (get) Token: 0x060005CC RID: 1484 RVA: 0x0001FFE8 File Offset: 0x0001E1E8
		public int RVA
		{
			get
			{
				return (int)this.rva;
			}
		}

		// Token: 0x17000133 RID: 307
		// (get) Token: 0x060005CD RID: 1485 RVA: 0x00020000 File Offset: 0x0001E200
		public bool HasBody
		{
			get
			{
				return (this.attributes & 1024) == 0 && (this.attributes & 8192) == 0 && (this.impl_attributes & 4096) == 0 && (this.impl_attributes & 1) == 0 && (this.impl_attributes & 4) == 0 && (this.impl_attributes & 3) == 0;
			}
		}

		// Token: 0x17000134 RID: 308
		// (get) Token: 0x060005CE RID: 1486 RVA: 0x00020060 File Offset: 0x0001E260
		// (set) Token: 0x060005CF RID: 1487 RVA: 0x00020100 File Offset: 0x0001E300
		public MethodBody Body
		{
			get
			{
				MethodBody methodBody = this.body;
				bool flag = methodBody != null;
				MethodBody result;
				if (flag)
				{
					result = methodBody;
				}
				else
				{
					bool flag2 = !this.HasBody;
					if (flag2)
					{
						result = null;
					}
					else
					{
						bool flag3 = base.HasImage && this.rva > 0U;
						if (flag3)
						{
							result = this.Module.Read<MethodDefinition, MethodBody>(ref this.body, this, (MethodDefinition method, MetadataReader reader) => reader.ReadMethodBody(method));
						}
						else
						{
							Interlocked.CompareExchange<MethodBody>(ref this.body, new MethodBody(this), null);
							result = this.body;
						}
					}
				}
				return result;
			}
			set
			{
				ModuleDefinition module = this.Module;
				bool flag = module == null;
				if (flag)
				{
					this.body = value;
				}
				else
				{
					object syncRoot = module.SyncRoot;
					lock (syncRoot)
					{
						this.body = value;
						bool flag3 = value == null;
						if (flag3)
						{
							this.debug_info = null;
						}
					}
				}
			}
		}

		// Token: 0x17000135 RID: 309
		// (get) Token: 0x060005D0 RID: 1488 RVA: 0x00020170 File Offset: 0x0001E370
		// (set) Token: 0x060005D1 RID: 1489 RVA: 0x000040C1 File Offset: 0x000022C1
		public MethodDebugInformation DebugInformation
		{
			get
			{
				Mixin.Read(this.Body);
				bool flag = this.debug_info == null;
				if (flag)
				{
					Interlocked.CompareExchange<MethodDebugInformation>(ref this.debug_info, new MethodDebugInformation(this), null);
				}
				return this.debug_info;
			}
			set
			{
				this.debug_info = value;
			}
		}

		// Token: 0x17000136 RID: 310
		// (get) Token: 0x060005D2 RID: 1490 RVA: 0x000201B8 File Offset: 0x0001E3B8
		public bool HasPInvokeInfo
		{
			get
			{
				bool flag = this.pinvoke != null;
				return flag || this.IsPInvokeImpl;
			}
		}

		// Token: 0x17000137 RID: 311
		// (get) Token: 0x060005D3 RID: 1491 RVA: 0x000201E4 File Offset: 0x0001E3E4
		// (set) Token: 0x060005D4 RID: 1492 RVA: 0x000040CB File Offset: 0x000022CB
		public PInvokeInfo PInvokeInfo
		{
			get
			{
				bool flag = this.pinvoke != null;
				PInvokeInfo result;
				if (flag)
				{
					result = this.pinvoke;
				}
				else
				{
					bool flag2 = base.HasImage && this.IsPInvokeImpl;
					if (flag2)
					{
						result = this.Module.Read<MethodDefinition, PInvokeInfo>(ref this.pinvoke, this, (MethodDefinition method, MetadataReader reader) => reader.ReadPInvokeInfo(method));
					}
					else
					{
						result = null;
					}
				}
				return result;
			}
			set
			{
				this.IsPInvokeImpl = true;
				this.pinvoke = value;
			}
		}

		// Token: 0x17000138 RID: 312
		// (get) Token: 0x060005D5 RID: 1493 RVA: 0x00020258 File Offset: 0x0001E458
		public bool HasOverrides
		{
			get
			{
				bool flag = this.overrides != null;
				bool result;
				if (flag)
				{
					result = (this.overrides.Count > 0);
				}
				else
				{
					bool flag2;
					if (base.HasImage)
					{
						flag2 = this.Module.Read<MethodDefinition, bool>(this, (MethodDefinition method, MetadataReader reader) => reader.HasOverrides(method));
					}
					else
					{
						flag2 = false;
					}
					result = flag2;
				}
				return result;
			}
		}

		// Token: 0x17000139 RID: 313
		// (get) Token: 0x060005D6 RID: 1494 RVA: 0x000202C0 File Offset: 0x0001E4C0
		public Collection<MethodReference> Overrides
		{
			get
			{
				bool flag = this.overrides != null;
				Collection<MethodReference> result;
				if (flag)
				{
					result = this.overrides;
				}
				else
				{
					bool hasImage = base.HasImage;
					if (hasImage)
					{
						result = this.Module.Read<MethodDefinition, Collection<MethodReference>>(ref this.overrides, this, (MethodDefinition method, MetadataReader reader) => reader.ReadOverrides(method));
					}
					else
					{
						Interlocked.CompareExchange<Collection<MethodReference>>(ref this.overrides, new Collection<MethodReference>(), null);
						result = this.overrides;
					}
				}
				return result;
			}
		}

		// Token: 0x1700013A RID: 314
		// (get) Token: 0x060005D7 RID: 1495 RVA: 0x00020340 File Offset: 0x0001E540
		public override bool HasGenericParameters
		{
			get
			{
				bool flag = this.generic_parameters != null;
				bool result;
				if (flag)
				{
					result = (this.generic_parameters.Count > 0);
				}
				else
				{
					result = this.GetHasGenericParameters(this.Module);
				}
				return result;
			}
		}

		// Token: 0x1700013B RID: 315
		// (get) Token: 0x060005D8 RID: 1496 RVA: 0x0002037C File Offset: 0x0001E57C
		public override Collection<GenericParameter> GenericParameters
		{
			get
			{
				return this.generic_parameters ?? this.GetGenericParameters(ref this.generic_parameters, this.Module);
			}
		}

		// Token: 0x1700013C RID: 316
		// (get) Token: 0x060005D9 RID: 1497 RVA: 0x000203AC File Offset: 0x0001E5AC
		public bool HasCustomDebugInformations
		{
			get
			{
				Mixin.Read(this.Body);
				return !this.custom_infos.IsNullOrEmpty<CustomDebugInformation>();
			}
		}

		// Token: 0x1700013D RID: 317
		// (get) Token: 0x060005DA RID: 1498 RVA: 0x000203D8 File Offset: 0x0001E5D8
		public Collection<CustomDebugInformation> CustomDebugInformations
		{
			get
			{
				Mixin.Read(this.Body);
				bool flag = this.custom_infos == null;
				if (flag)
				{
					Interlocked.CompareExchange<Collection<CustomDebugInformation>>(ref this.custom_infos, new Collection<CustomDebugInformation>(), null);
				}
				return this.custom_infos;
			}
		}

		// Token: 0x1700013E RID: 318
		// (get) Token: 0x060005DB RID: 1499 RVA: 0x0002041C File Offset: 0x0001E61C
		// (set) Token: 0x060005DC RID: 1500 RVA: 0x000040DD File Offset: 0x000022DD
		public bool IsCompilerControlled
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7, 0U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7, 0U, value);
			}
		}

		// Token: 0x1700013F RID: 319
		// (get) Token: 0x060005DD RID: 1501 RVA: 0x0002043C File Offset: 0x0001E63C
		// (set) Token: 0x060005DE RID: 1502 RVA: 0x000040F4 File Offset: 0x000022F4
		public bool IsPrivate
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7, 1U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7, 1U, value);
			}
		}

		// Token: 0x17000140 RID: 320
		// (get) Token: 0x060005DF RID: 1503 RVA: 0x0002045C File Offset: 0x0001E65C
		// (set) Token: 0x060005E0 RID: 1504 RVA: 0x0000410B File Offset: 0x0000230B
		public bool IsFamilyAndAssembly
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7, 2U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7, 2U, value);
			}
		}

		// Token: 0x17000141 RID: 321
		// (get) Token: 0x060005E1 RID: 1505 RVA: 0x0002047C File Offset: 0x0001E67C
		// (set) Token: 0x060005E2 RID: 1506 RVA: 0x00004122 File Offset: 0x00002322
		public bool IsAssembly
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7, 3U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7, 3U, value);
			}
		}

		// Token: 0x17000142 RID: 322
		// (get) Token: 0x060005E3 RID: 1507 RVA: 0x0002049C File Offset: 0x0001E69C
		// (set) Token: 0x060005E4 RID: 1508 RVA: 0x00004139 File Offset: 0x00002339
		public bool IsFamily
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7, 4U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7, 4U, value);
			}
		}

		// Token: 0x17000143 RID: 323
		// (get) Token: 0x060005E5 RID: 1509 RVA: 0x000204BC File Offset: 0x0001E6BC
		// (set) Token: 0x060005E6 RID: 1510 RVA: 0x00004150 File Offset: 0x00002350
		public bool IsFamilyOrAssembly
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7, 5U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7, 5U, value);
			}
		}

		// Token: 0x17000144 RID: 324
		// (get) Token: 0x060005E7 RID: 1511 RVA: 0x000204DC File Offset: 0x0001E6DC
		// (set) Token: 0x060005E8 RID: 1512 RVA: 0x00004167 File Offset: 0x00002367
		public bool IsPublic
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7, 6U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7, 6U, value);
			}
		}

		// Token: 0x17000145 RID: 325
		// (get) Token: 0x060005E9 RID: 1513 RVA: 0x000204FC File Offset: 0x0001E6FC
		// (set) Token: 0x060005EA RID: 1514 RVA: 0x0000417E File Offset: 0x0000237E
		public bool IsStatic
		{
			get
			{
				return this.attributes.GetAttributes(16);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(16, value);
			}
		}

		// Token: 0x17000146 RID: 326
		// (get) Token: 0x060005EB RID: 1515 RVA: 0x0002051C File Offset: 0x0001E71C
		// (set) Token: 0x060005EC RID: 1516 RVA: 0x00004195 File Offset: 0x00002395
		public bool IsFinal
		{
			get
			{
				return this.attributes.GetAttributes(32);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(32, value);
			}
		}

		// Token: 0x17000147 RID: 327
		// (get) Token: 0x060005ED RID: 1517 RVA: 0x0002053C File Offset: 0x0001E73C
		// (set) Token: 0x060005EE RID: 1518 RVA: 0x000041AC File Offset: 0x000023AC
		public bool IsVirtual
		{
			get
			{
				return this.attributes.GetAttributes(64);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(64, value);
			}
		}

		// Token: 0x17000148 RID: 328
		// (get) Token: 0x060005EF RID: 1519 RVA: 0x0002055C File Offset: 0x0001E75C
		// (set) Token: 0x060005F0 RID: 1520 RVA: 0x000041C3 File Offset: 0x000023C3
		public bool IsHideBySig
		{
			get
			{
				return this.attributes.GetAttributes(128);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(128, value);
			}
		}

		// Token: 0x17000149 RID: 329
		// (get) Token: 0x060005F1 RID: 1521 RVA: 0x00020580 File Offset: 0x0001E780
		// (set) Token: 0x060005F2 RID: 1522 RVA: 0x000041DD File Offset: 0x000023DD
		public bool IsReuseSlot
		{
			get
			{
				return this.attributes.GetMaskedAttributes(256, 0U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(256, 0U, value);
			}
		}

		// Token: 0x1700014A RID: 330
		// (get) Token: 0x060005F3 RID: 1523 RVA: 0x000205A4 File Offset: 0x0001E7A4
		// (set) Token: 0x060005F4 RID: 1524 RVA: 0x000041F8 File Offset: 0x000023F8
		public bool IsNewSlot
		{
			get
			{
				return this.attributes.GetMaskedAttributes(256, 256U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(256, 256U, value);
			}
		}

		// Token: 0x1700014B RID: 331
		// (get) Token: 0x060005F5 RID: 1525 RVA: 0x000205CC File Offset: 0x0001E7CC
		// (set) Token: 0x060005F6 RID: 1526 RVA: 0x00004217 File Offset: 0x00002417
		public bool IsCheckAccessOnOverride
		{
			get
			{
				return this.attributes.GetAttributes(512);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(512, value);
			}
		}

		// Token: 0x1700014C RID: 332
		// (get) Token: 0x060005F7 RID: 1527 RVA: 0x000205F0 File Offset: 0x0001E7F0
		// (set) Token: 0x060005F8 RID: 1528 RVA: 0x00004231 File Offset: 0x00002431
		public bool IsAbstract
		{
			get
			{
				return this.attributes.GetAttributes(1024);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(1024, value);
			}
		}

		// Token: 0x1700014D RID: 333
		// (get) Token: 0x060005F9 RID: 1529 RVA: 0x00020614 File Offset: 0x0001E814
		// (set) Token: 0x060005FA RID: 1530 RVA: 0x0000424B File Offset: 0x0000244B
		public bool IsSpecialName
		{
			get
			{
				return this.attributes.GetAttributes(2048);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(2048, value);
			}
		}

		// Token: 0x1700014E RID: 334
		// (get) Token: 0x060005FB RID: 1531 RVA: 0x00020638 File Offset: 0x0001E838
		// (set) Token: 0x060005FC RID: 1532 RVA: 0x00004265 File Offset: 0x00002465
		public bool IsPInvokeImpl
		{
			get
			{
				return this.attributes.GetAttributes(8192);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(8192, value);
			}
		}

		// Token: 0x1700014F RID: 335
		// (get) Token: 0x060005FD RID: 1533 RVA: 0x0002065C File Offset: 0x0001E85C
		// (set) Token: 0x060005FE RID: 1534 RVA: 0x0000427F File Offset: 0x0000247F
		public bool IsUnmanagedExport
		{
			get
			{
				return this.attributes.GetAttributes(8);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(8, value);
			}
		}

		// Token: 0x17000150 RID: 336
		// (get) Token: 0x060005FF RID: 1535 RVA: 0x0002067C File Offset: 0x0001E87C
		// (set) Token: 0x06000600 RID: 1536 RVA: 0x00004295 File Offset: 0x00002495
		public bool IsRuntimeSpecialName
		{
			get
			{
				return this.attributes.GetAttributes(4096);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(4096, value);
			}
		}

		// Token: 0x17000151 RID: 337
		// (get) Token: 0x06000601 RID: 1537 RVA: 0x000206A0 File Offset: 0x0001E8A0
		// (set) Token: 0x06000602 RID: 1538 RVA: 0x000042AF File Offset: 0x000024AF
		public bool HasSecurity
		{
			get
			{
				return this.attributes.GetAttributes(16384);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(16384, value);
			}
		}

		// Token: 0x17000152 RID: 338
		// (get) Token: 0x06000603 RID: 1539 RVA: 0x000206C4 File Offset: 0x0001E8C4
		// (set) Token: 0x06000604 RID: 1540 RVA: 0x000042C9 File Offset: 0x000024C9
		public bool IsIL
		{
			get
			{
				return this.impl_attributes.GetMaskedAttributes(3, 0U);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetMaskedAttributes(3, 0U, value);
			}
		}

		// Token: 0x17000153 RID: 339
		// (get) Token: 0x06000605 RID: 1541 RVA: 0x000206E4 File Offset: 0x0001E8E4
		// (set) Token: 0x06000606 RID: 1542 RVA: 0x000042E0 File Offset: 0x000024E0
		public bool IsNative
		{
			get
			{
				return this.impl_attributes.GetMaskedAttributes(3, 1U);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetMaskedAttributes(3, 1U, value);
			}
		}

		// Token: 0x17000154 RID: 340
		// (get) Token: 0x06000607 RID: 1543 RVA: 0x00020704 File Offset: 0x0001E904
		// (set) Token: 0x06000608 RID: 1544 RVA: 0x000042F7 File Offset: 0x000024F7
		public bool IsRuntime
		{
			get
			{
				return this.impl_attributes.GetMaskedAttributes(3, 3U);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetMaskedAttributes(3, 3U, value);
			}
		}

		// Token: 0x17000155 RID: 341
		// (get) Token: 0x06000609 RID: 1545 RVA: 0x00020724 File Offset: 0x0001E924
		// (set) Token: 0x0600060A RID: 1546 RVA: 0x0000430E File Offset: 0x0000250E
		public bool IsUnmanaged
		{
			get
			{
				return this.impl_attributes.GetMaskedAttributes(4, 4U);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetMaskedAttributes(4, 4U, value);
			}
		}

		// Token: 0x17000156 RID: 342
		// (get) Token: 0x0600060B RID: 1547 RVA: 0x00020744 File Offset: 0x0001E944
		// (set) Token: 0x0600060C RID: 1548 RVA: 0x00004325 File Offset: 0x00002525
		public bool IsManaged
		{
			get
			{
				return this.impl_attributes.GetMaskedAttributes(4, 0U);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetMaskedAttributes(4, 0U, value);
			}
		}

		// Token: 0x17000157 RID: 343
		// (get) Token: 0x0600060D RID: 1549 RVA: 0x00020764 File Offset: 0x0001E964
		// (set) Token: 0x0600060E RID: 1550 RVA: 0x0000433C File Offset: 0x0000253C
		public bool IsForwardRef
		{
			get
			{
				return this.impl_attributes.GetAttributes(16);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetAttributes(16, value);
			}
		}

		// Token: 0x17000158 RID: 344
		// (get) Token: 0x0600060F RID: 1551 RVA: 0x00020784 File Offset: 0x0001E984
		// (set) Token: 0x06000610 RID: 1552 RVA: 0x00004353 File Offset: 0x00002553
		public bool IsPreserveSig
		{
			get
			{
				return this.impl_attributes.GetAttributes(128);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetAttributes(128, value);
			}
		}

		// Token: 0x17000159 RID: 345
		// (get) Token: 0x06000611 RID: 1553 RVA: 0x000207A8 File Offset: 0x0001E9A8
		// (set) Token: 0x06000612 RID: 1554 RVA: 0x0000436D File Offset: 0x0000256D
		public bool IsInternalCall
		{
			get
			{
				return this.impl_attributes.GetAttributes(4096);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetAttributes(4096, value);
			}
		}

		// Token: 0x1700015A RID: 346
		// (get) Token: 0x06000613 RID: 1555 RVA: 0x000207CC File Offset: 0x0001E9CC
		// (set) Token: 0x06000614 RID: 1556 RVA: 0x00004387 File Offset: 0x00002587
		public bool IsSynchronized
		{
			get
			{
				return this.impl_attributes.GetAttributes(32);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetAttributes(32, value);
			}
		}

		// Token: 0x1700015B RID: 347
		// (get) Token: 0x06000615 RID: 1557 RVA: 0x000207EC File Offset: 0x0001E9EC
		// (set) Token: 0x06000616 RID: 1558 RVA: 0x0000439E File Offset: 0x0000259E
		public bool NoInlining
		{
			get
			{
				return this.impl_attributes.GetAttributes(8);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetAttributes(8, value);
			}
		}

		// Token: 0x1700015C RID: 348
		// (get) Token: 0x06000617 RID: 1559 RVA: 0x0002080C File Offset: 0x0001EA0C
		// (set) Token: 0x06000618 RID: 1560 RVA: 0x000043B4 File Offset: 0x000025B4
		public bool NoOptimization
		{
			get
			{
				return this.impl_attributes.GetAttributes(64);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetAttributes(64, value);
			}
		}

		// Token: 0x1700015D RID: 349
		// (get) Token: 0x06000619 RID: 1561 RVA: 0x0002082C File Offset: 0x0001EA2C
		// (set) Token: 0x0600061A RID: 1562 RVA: 0x000043CB File Offset: 0x000025CB
		public bool AggressiveInlining
		{
			get
			{
				return this.impl_attributes.GetAttributes(256);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetAttributes(256, value);
			}
		}

		// Token: 0x1700015E RID: 350
		// (get) Token: 0x0600061B RID: 1563 RVA: 0x00020850 File Offset: 0x0001EA50
		// (set) Token: 0x0600061C RID: 1564 RVA: 0x000043E5 File Offset: 0x000025E5
		public bool AggressiveOptimization
		{
			get
			{
				return this.impl_attributes.GetAttributes(512);
			}
			set
			{
				this.impl_attributes = this.impl_attributes.SetAttributes(512, value);
			}
		}

		// Token: 0x1700015F RID: 351
		// (get) Token: 0x0600061D RID: 1565 RVA: 0x00020874 File Offset: 0x0001EA74
		// (set) Token: 0x0600061E RID: 1566 RVA: 0x000043FF File Offset: 0x000025FF
		public bool IsSetter
		{
			get
			{
				return this.GetSemantics(MethodSemanticsAttributes.Setter);
			}
			set
			{
				this.SetSemantics(MethodSemanticsAttributes.Setter, value);
			}
		}

		// Token: 0x17000160 RID: 352
		// (get) Token: 0x0600061F RID: 1567 RVA: 0x00020890 File Offset: 0x0001EA90
		// (set) Token: 0x06000620 RID: 1568 RVA: 0x0000440B File Offset: 0x0000260B
		public bool IsGetter
		{
			get
			{
				return this.GetSemantics(MethodSemanticsAttributes.Getter);
			}
			set
			{
				this.SetSemantics(MethodSemanticsAttributes.Getter, value);
			}
		}

		// Token: 0x17000161 RID: 353
		// (get) Token: 0x06000621 RID: 1569 RVA: 0x000208AC File Offset: 0x0001EAAC
		// (set) Token: 0x06000622 RID: 1570 RVA: 0x00004417 File Offset: 0x00002617
		public bool IsOther
		{
			get
			{
				return this.GetSemantics(MethodSemanticsAttributes.Other);
			}
			set
			{
				this.SetSemantics(MethodSemanticsAttributes.Other, value);
			}
		}

		// Token: 0x17000162 RID: 354
		// (get) Token: 0x06000623 RID: 1571 RVA: 0x000208C8 File Offset: 0x0001EAC8
		// (set) Token: 0x06000624 RID: 1572 RVA: 0x00004423 File Offset: 0x00002623
		public bool IsAddOn
		{
			get
			{
				return this.GetSemantics(MethodSemanticsAttributes.AddOn);
			}
			set
			{
				this.SetSemantics(MethodSemanticsAttributes.AddOn, value);
			}
		}

		// Token: 0x17000163 RID: 355
		// (get) Token: 0x06000625 RID: 1573 RVA: 0x000208E4 File Offset: 0x0001EAE4
		// (set) Token: 0x06000626 RID: 1574 RVA: 0x0000442F File Offset: 0x0000262F
		public bool IsRemoveOn
		{
			get
			{
				return this.GetSemantics(MethodSemanticsAttributes.RemoveOn);
			}
			set
			{
				this.SetSemantics(MethodSemanticsAttributes.RemoveOn, value);
			}
		}

		// Token: 0x17000164 RID: 356
		// (get) Token: 0x06000627 RID: 1575 RVA: 0x00020900 File Offset: 0x0001EB00
		// (set) Token: 0x06000628 RID: 1576 RVA: 0x0000443C File Offset: 0x0000263C
		public bool IsFire
		{
			get
			{
				return this.GetSemantics(MethodSemanticsAttributes.Fire);
			}
			set
			{
				this.SetSemantics(MethodSemanticsAttributes.Fire, value);
			}
		}

		// Token: 0x17000165 RID: 357
		// (get) Token: 0x06000629 RID: 1577 RVA: 0x0001B280 File Offset: 0x00019480
		// (set) Token: 0x0600062A RID: 1578 RVA: 0x00003571 File Offset: 0x00001771
		public new TypeDefinition DeclaringType
		{
			get
			{
				return (TypeDefinition)base.DeclaringType;
			}
			set
			{
				base.DeclaringType = value;
			}
		}

		// Token: 0x17000166 RID: 358
		// (get) Token: 0x0600062B RID: 1579 RVA: 0x0002091C File Offset: 0x0001EB1C
		public bool IsConstructor
		{
			get
			{
				return this.IsRuntimeSpecialName && this.IsSpecialName && (this.Name == ".cctor" || this.Name == ".ctor");
			}
		}

		// Token: 0x17000167 RID: 359
		// (get) Token: 0x0600062C RID: 1580 RVA: 0x0000A3A0 File Offset: 0x000085A0
		public override bool IsDefinition
		{
			get
			{
				return true;
			}
		}

		// Token: 0x0600062D RID: 1581 RVA: 0x00004449 File Offset: 0x00002649
		internal MethodDefinition()
		{
			this.token = new MetadataToken(TokenType.Method);
		}

		// Token: 0x0600062E RID: 1582 RVA: 0x00004463 File Offset: 0x00002663
		public MethodDefinition(string name, MethodAttributes attributes, TypeReference returnType) : base(name, returnType)
		{
			this.attributes = (ushort)attributes;
			this.HasThis = !this.IsStatic;
			this.token = new MetadataToken(TokenType.Method);
		}

		// Token: 0x0600062F RID: 1583 RVA: 0x00020968 File Offset: 0x0001EB68
		public override MethodDefinition Resolve()
		{
			return this;
		}

		// Token: 0x040001A4 RID: 420
		private ushort attributes;

		// Token: 0x040001A5 RID: 421
		private ushort impl_attributes;

		// Token: 0x040001A6 RID: 422
		internal volatile bool sem_attrs_ready;

		// Token: 0x040001A7 RID: 423
		internal MethodSemanticsAttributes sem_attrs;

		// Token: 0x040001A8 RID: 424
		private Collection<CustomAttribute> custom_attributes;

		// Token: 0x040001A9 RID: 425
		private Collection<SecurityDeclaration> security_declarations;

		// Token: 0x040001AA RID: 426
		internal uint rva;

		// Token: 0x040001AB RID: 427
		internal PInvokeInfo pinvoke;

		// Token: 0x040001AC RID: 428
		private Collection<MethodReference> overrides;

		// Token: 0x040001AD RID: 429
		internal MethodBody body;

		// Token: 0x040001AE RID: 430
		internal MethodDebugInformation debug_info;

		// Token: 0x040001AF RID: 431
		internal Collection<CustomDebugInformation> custom_infos;
	}
}
